Many software applications are used to exchange messages with one another in order, for example, to enable or facilitate a function of the software application(s). For example, such message exchanges may occur within and among many types of business software applications, such as Customer Resource Management (CRM) applications, Enterprise Resource Planning (ERP) applications, and/or Supply Chain Management (SCM) applications.
In many cases, it may occur that such message exchanges are asynchronous, yet related messages sent by one of the applications must be maintained in a pre-determined order, such as a serialized or serial order. For example, again in the specific example of a business application, it may occur that an order is received from a customer to purchase a product. Messages may then be sent by the related business application related to, among other topics, receipt of payment, inventory processing, and shipment processing. In this example, messages sent/received that are related to payment receipt must be ordered ahead of the other messages, so that exceptions do not occur such as starting the inventory or shipping processes only to find after the fact that payment has not been, or will not be, received.
Maintaining such order in the context of a single set of messages associated with a single application and single messaging environment may be straight-forward. For example, if a set of such serial messages are processed through a single queue or buffer, then the messages may simply be processed on a first-in-first-out (FIFO) order.
In practice, however, complications and difficulties may arise. For example, it may occur that multiple sets of serialized messages are to be processed within a corresponding multiplicity of queues and queue environments (e.g., on different computing devices), such as when (in the example above) a new queue is established for each new customer order. Moreover, it may be desirable to alter a processing of the messages to obtain a desired result, such as faster processing time or improved queue organization. In such cases, it may be difficult to obtain the desired result while also maintaining the desired order of the various serialized messages.